package com.bjsxt;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
/**遍历集合
 * 调用集合的 public void forEach(Consumer<? super E> action)方法
 * 通过lambda 表达式的方式遍历集合中的元素，以下是Consumer 接口的方法及遍历集合的操作。
 * Consumer 接口是jdk 为我们提供的一个函数式接口*/

//接口实现类
class ConsumerImpl implements Consumer {

    @Override
    public void accept(Object o) {
        System.out.println(o);
    }
}
public class Test04 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        //这方法比较麻烦 要定义接口实现类
        /*ConsumerImpl c = new ConsumerImpl();
        //forEach() 方法把每一个元素 传递到accept（）方法中，打印出来
        //因为把ConsumerImpl 类的引用给了forEach()
        list.forEach(c);*/

        //lambda 表达式的方式遍历集合中的元素
        /*System.out返回的是静态的PrintStream对象，再调用其对象的println方法*/
        list.forEach(System.out::println);
        /*首先把println方法绑定在Consumer接口中，再通过forEach（）循环
        * 迭代出每一个元素，再在println中输出*/
    }
}
